package org.example.ExperimentTwo;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//John Smith is a famous author. Jns Smit is also known in the field.
//public class PiPei {
//    public static void main(String[] args) {
//       fun2();
//    }
//    public  static void fun2(){
//        Scanner sc = new Scanner(System.in);
//
//        System.out.println("请输入需要匹配的人名格式:");
//        String name = sc.nextLine();
//        System.out.println("请输入字符串:");
//        String str = sc.nextLine();
//
//        // 在人名模式的前后添加单词边界，并将通配符转换为正则表达式
//        String regex = "(?i)\\b" + name.replaceAll("\\*", "[^\\s]*").replaceAll("\\?", "[^\\s]") + "\\b";
//        // 创建正则表达式的模式，设置为不区分大小写
//        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
//        // 在字符串中进行匹配
//        Matcher matcher = pattern.matcher(str);
//        System.out.println("匹配到的人名：");
//        while (matcher.find()) {
//            System.out.println(matcher.group());
//        }
//    }
//}


import java.util.concurrent.Callable;

public class PiPei {
    public static void main(String[] args) {
        Callable<Void> task = PiPei::fun2AsCallable; // 将fun2转换为Callable任务
        try {
            Void result = TimeUtils.measureTime(task); // 测量并执行任务
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Void fun2AsCallable() {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入需要匹配的人名格式:");
        String name = sc.nextLine();
        System.out.println("请输入字符串:");
        String str = sc.nextLine();

        // 在人名模式的前后添加单词边界，并将通配符转换为正则表达式
        String regex = "(?i)\\b" + name.replaceAll("\\*", "[^\\s]*").replaceAll("\\?", "[^\\s]") + "\\b";
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(str);

        System.out.println("匹配到的人名：");
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
        return null; // Callable任务需要有返回类型，这里因为我们不关心返回值，所以返回null
    }
}